package message.controller;

import message.model.Message;
import message.model.User;
import message.service.MessageService;
import message.service.UserService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("user")
public class MessageController {

	@Resource
	private MessageService messageService;
	private UserService userService;
	private final Log logger = LogFactory.getLog(getClass());
	
		/**
		 * @author: �����
		 * @date: 2016��6��22��
		 * @param receiveid
		 * @describe���鿴���ԡ�  receiveidΪ��������id��   currentPageĿ��Ϊ��ҳ
		 */
	@RequestMapping("/showMessages")
	public ModelAndView showMessages(Integer receiveid,Integer currentPage,HttpSession session){
		ModelAndView mav=new ModelAndView();
		User host=(User)session.getAttribute("host");
//		int totalmessages=messageService.messageCount(receiveid); //��ȡ��û�з�ҳ��������м�¼����������ǰ�˻�ȡ������¥����
		if(currentPage==null) currentPage=1;  //�紫����ֵ�ǿգ�����ʾ��һҳ
//		PageInfo result=messageService.showMessages(receiveid,currentPage);//,��ѯreceiceidΪ���ղ���������������Ϣ
//		List messages=result.getList();  //��ȡ��װ��PageInfo�в�ѯ���ķ�ҳ�����
//		result.setList(null); //ʹ��PageInfo������е�ֵΪ�գ��Ա�����ͬ������ת�����·�װ��������ÿգ�������������ԭ���ļ�����������ݣ������ظ���
//		if(messages.size()<=0){   //�����ǿյ�����£���ʾ�û�
//			mav.addObject("messages",null );
//			mav.addObject("showMessageback","���԰��ǿյģ���ȥ���԰�" );
//		}
//		List messageList=new ArrayList();  //���ڴ��Map���ϡ�Map���Ϸ���������ߵ���Ϣ������
//		for(int i=0;i<messages.size();i++){
//			Map messageuser=new HashMap<String, Object>(); //Map���ϣ���������ߵ���Ϣ������
//			Message message=(Message)messages.get(i);
//			String timestring=1900+message.getMessagetime().getYear()+"��"+(message.getMessagetime().getMonth()+1)+"��"+message.getMessagetime().getDate()+"��       "
//					+message.getMessagetime().getHours()+": "+message.getMessagetime().getMinutes()+": "+message.getMessagetime().getSeconds();
//			message.setTimestring(timestring);  //��ʱ���ʽ�ı���й���ɫ��ʱ���ʽ
//			User user1=userService.findUserById(message.getSenderid()); //��ѯ�����ߵ���Ϣ
//			messageuser.put("message", message); //�����ߵ�����
//			messageuser.put("user", user1);  //�����ߵ���Ϣ
//			messageList.add(messageuser);  //�����������ߵ�map���Ϸ���list��
//		}
//		result.setList(messageList);  //ͨ���Բ�ѯ�����ת�������·�װPageInfo�Ĳ�ѯ���list
//		mav.addObject("allmessages",result);
//		mav.addObject("totalmessages",totalmessages);
		mav.addObject("receiver", userService.findUserById(receiveid));  //���������ߵ�id����ǰ̨����
		if(host.getUserid().equals(receiveid)){ //�����id��ͬ��ת���ҳ��Ҳ��ͬ
			logger.info(host.getQq()+"�鿴���Լ�������");
			mav.setViewName("message");   //���˲鿴�Լ�������ת����ҳ��
		}else{
			logger.info(host.getQq()+"�鿴�˺���"+userService.findUserById(receiveid).getQq()+"+������");
			mav.setViewName("messageother");  //���˲鿴�Լ���������ת����ҳ��
		}
		return mav;
	}
	/**
	 * 
		 * @author: �����
		 * @date: 2016��6��23��
		 * @param message
		 * @describe�����ԡ�����һ�����Լ�¼
	 */
	@RequestMapping("/leaveMessage")
	public ModelAndView leaveMessage(Message message){
		 ModelAndView mav=new ModelAndView();
		 mav.setViewName("redirect:/user/showMessages?receiveid="+message.getReceiveid()); //�ض��򵽲�ѯ���Խ���
		 java.util.Date  date=new java.util.Date();
		 java.sql.Timestamp time=new java.sql.Timestamp(date.getTime()); //���뵱ǰʱ��
		 message.setMessagetime(time);
		 message.setParentmessageid(0);  //������Ϣ��idΪ0����ʾ��Ϊ�ظ�����
		 boolean leave_suc=messageService.leaveMessage(message);
		 if(leave_suc){
			 mav.addObject("leave_suc", "���Գɹ���");
		 }
		 else{
			 mav.addObject("leave_fail", "����ʧ�ܣ�");
		 }
		 return mav;
	}
	/**
		 * @author: �����
		 * @date: 2016��6��23��
		 * @param messageid
		 * @param receiveid
		 * @param currentPage
		 * @describe�������receiveid��currentPage����������Ϊ�����ض���ʱ����֮��
		 * ��ɾ���ɹ� ����ת��ɾ��ʱ���ڲ�ѯ���档�����Ƿ�ҳ������Ҫ�ѵ�ǰҳcurrentPage�ͱ�������receiveid����
	 */
	@RequestMapping("/deleteMessage")
	public ModelAndView deleteMessage(int messageid,Integer receiveid,Integer currentPage,HttpSession session ){
		ModelAndView mav=new ModelAndView();
		User host=(User)session.getAttribute("host");
		boolean delete_suc=messageService.deleteMessage(messageid);
		 if(delete_suc){
			 logger.info(host.getQq()+"ɾ����һ������");
			 mav.addObject("delete_suc", "ɾ���ɹ���");
		 }
		 else{
			 mav.addObject("delete_fail", "ɾ��ʧ�ܣ�");
		 }
		 mav.setViewName("redirect:/user/showMessages?receiveid="+receiveid+"&currentPage="+currentPage);
		 return mav;
	}
	
  
}
